#pragma once 
#include "timer.h"
#include <set>
#include <vector>
#include "channel/timerchannel.h"
#include "event.h"
namespace TinyRPC {
class EventLoop;
class TimerQueue{
public:
    TimerQueue();
    std::vector<Timer> getAllExpired();
    EventPtr getEventPtr();
    void addTimer(const Timer&);
    void cancelTimer();
    void timerQueueTask();

    void timerQueueUpdateEvent(EventLoop* loop);
private:
    // 所有的定时器任务
    std::set<Timer> m_timers;
    TimerChannel m_timerChannel;
    // 最近的一个定时器时间
    TimeStamp m_latestTime;
};

}
